/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.laporananggaranpendapatanuangkemahasiswaan;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.sadhar.sia.common.ClassUtility;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zkex.zul.Jasperreport;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Panel;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

/**
 *
 * @author kris
 */
public class LaporanAnggaranPendapatanUangKemahasiswaanWnd extends ClassApplicationModule {

    private Combobox cmbboxTahunAwal;
    private Combobox cmbboxTahunAkhir;
    private Checkbox chkboxUnitKerja;
    private Checkbox chkboxJenisTagihan;
    private Radio rdTahun;
    private Radio rdUnitKerja;
    private Radio rdJenisTagihan;
    private Jasperreport jasper;
    private String tahunAwal;
    private String tahunAkhir;
    private Textbox txtboxUnitKerja;
    private Textbox txtboxIdUnitKerja;
    private Textbox txtboxJenisTagihan;
    private Textbox txtboxIdJenisTagihan;
    private Panel panelReport;
    private Button buttonHideExport;
    private Listbox lstboxFormatLaporan;
    private LaporanAnggaranPendapatanUangKemahasiswaanDAO laporanAnggaranPendapatanUangKemahasiswaanDAO;

    public LaporanAnggaranPendapatanUangKemahasiswaanWnd() {
        laporanAnggaranPendapatanUangKemahasiswaanDAO = new LaporanAnggaranPendapatanUangKemahasiswaanDAOImpl();
        tahunAwal = new String();
        tahunAkhir = new String();
    }

    public void onCreate() throws Exception {
        cmbboxTahunAwal = (Combobox) getFellow("cmbboxTahunAwal");
        cmbboxTahunAkhir = (Combobox) getFellow("cmbboxTahunAkhir");
        chkboxUnitKerja = (Checkbox) getFellow("chkboxUnitKerja");
        chkboxJenisTagihan = (Checkbox) getFellow("chkboxJenisTagihan");
        rdTahun = (Radio) getFellow("rdTahun");
        rdUnitKerja = (Radio) getFellow("rdUnitKerja");
        rdJenisTagihan = (Radio) getFellow("rdJenisTagihan");
        jasper = (Jasperreport) getFellow("jasper");
        txtboxIdUnitKerja = (Textbox) getFellow("txtboxIdUnitKerja");
        txtboxIdJenisTagihan = (Textbox) getFellow("txtboxIdJenisTagihan");
        txtboxUnitKerja = (Textbox) getFellow("txtboxUnitKerja");
        txtboxJenisTagihan = (Textbox) getFellow("txtboxJenisTagihan");
        panelReport = (Panel) getFellow("panelReport");
        buttonHideExport = (Button) getFellow("buttonHideExport");
        lstboxFormatLaporan = (Listbox) getFellow("lstboxFormatLaporan");
        loadComboTahunAwal();
        loadComboTahunAkhir();
    }

    public void loadComboTahunAwal() throws Exception {
        cmbboxTahunAkhir.getItems().clear();
        for (Map map : laporanAnggaranPendapatanUangKemahasiswaanDAO.getTahunAnggaran()) {
            Comboitem item = new Comboitem();
            item.setValue(map);
            item.setLabel(map.get("tahunAnggaran").toString());
            cmbboxTahunAwal.appendChild(item);
        }
    }

    public void loadComboTahunAkhir() throws Exception {
        cmbboxTahunAkhir.getItems().clear();
        for (Map map : laporanAnggaranPendapatanUangKemahasiswaanDAO.getTahunAnggaran()) {
            Comboitem item = new Comboitem();
            item.setValue(map);
            item.setLabel(map.get("tahunAnggaran").toString());
            cmbboxTahunAkhir.appendChild(item);
        }
    }

    public void chkboxUnitKerjaOnCheck() {
        if (chkboxUnitKerja.isChecked()) {
            //chkboxJenisTagihan.setChecked(false);
        } else {
            txtboxIdUnitKerja.setValue("");
            txtboxUnitKerja.setValue("");
        }
    }

    public void chkboxJenisTagihanOnCheck() {
        if (chkboxJenisTagihan.isChecked()) {
            //chkboxUnitKerja.setChecked(false);
        } else {
            txtboxIdJenisTagihan.setValue("");
            txtboxJenisTagihan.setValue("");
        }
    }

    public void cmbboxTahunAwalOnSelect() {
        Map map = (Map) cmbboxTahunAwal.getSelectedItem().getValue();
        tahunAwal = map.get("tahunAnggaran").toString();
    }

    public void cmbboxTahunAkhirOnSelect() throws InterruptedException {
        Map map = (Map) cmbboxTahunAkhir.getSelectedItem().getValue();
        tahunAkhir = map.get("tahunAnggaran").toString();

    }

    public void btnCariUnitKerjaOnClick() throws InterruptedException {
        Window win = (Window) Executions.createComponents("sippzul/laporananggaranpendapatanuangkemahasiswaan/UnitKerjaPopup.zul", this, null);
        win.doModal();
    }

    public void btnCariJenisTagihanOnClick() throws InterruptedException {
        Window win = (Window) Executions.createComponents("sippzul/laporananggaranpendapatanuangkemahasiswaan/JenisTagihanPopup.zul", this, null);
        win.doModal();
    }

    public void btnCetakOnClick() throws Exception {

        if (tahunAwal.equals("") || tahunAkhir.equals("")) {
            Messagebox.show("Data tahun tidak lengkap", "Pesan kesalahan", Messagebox.YES, Messagebox.ERROR);
        } else if (rdTahun.isChecked() == false && rdJenisTagihan.isChecked() == false && rdUnitKerja.isChecked() == false) {
            Messagebox.show("Masukan pilihan", "Pesan kesalahan", Messagebox.YES, Messagebox.ERROR);
        } else if (!chkboxJenisTagihan.isChecked() && !chkboxUnitKerja.isChecked()) {
            Messagebox.show("Masukan pilihan", "Pesan kesalahan", Messagebox.YES, Messagebox.ERROR);
        } else {
            if (Integer.valueOf(tahunAkhir) < Integer.valueOf(tahunAwal)) {
                Messagebox.show("Tahun akhir tidak boleh lebih kecil dari tahun awal", "Pesan kesalahan", Messagebox.YES, Messagebox.ERROR);
            } else {
                String kdTagih = "";
                String kdUnit = "";
                jasper.setType(lstboxFormatLaporan.getSelectedItem().getValue().toString());
                if (chkboxJenisTagihan.isChecked() && txtboxIdJenisTagihan.getValue().toString() != null) {
                    kdTagih = txtboxIdJenisTagihan.getValue().toString();
                }
                if (chkboxUnitKerja.isChecked() && txtboxIdUnitKerja.getValue().toString() != null) {
                    kdUnit = txtboxIdUnitKerja.getValue().toString();
                }

                if (rdJenisTagihan.isChecked()) {
                    jasper.setSrc("reports/laporananggaranpendapatanuangkemahasiswaan/LaporanAnggaranPendapatanUangKemahasiswaanByJenisTagihan.jasper");
                    List<Map> data = new ArrayList<Map>();
                    Map map = new HashMap();
                    map.put("tahunAwal", tahunAwal);
                    map.put("tahunAKhir", tahunAkhir);
                    jasper.setParameters(map);
                    jasper.setDatasource(ClassUtility.createDatasource(laporanAnggaranPendapatanUangKemahasiswaanDAO.getReport(tahunAwal, tahunAkhir, kdUnit, kdTagih)));
                    tampilkanLaporan();
                }
                if (rdTahun.isChecked()) {
                    jasper.setSrc("reports/laporananggaranpendapatanuangkemahasiswaan/LaporanAnggaranPendapatanUangKemahasiswaanByTahun.jasper");
                    List<Map> data = new ArrayList<Map>();
                    Map map = new HashMap();
                    map.put("tahunAwal", tahunAwal);
                    map.put("tahunAKhir", tahunAkhir);
                    jasper.setParameters(map);
                    jasper.setDatasource(ClassUtility.createDatasource(laporanAnggaranPendapatanUangKemahasiswaanDAO.getReport(tahunAwal, tahunAkhir, kdUnit, kdTagih)));
                    tampilkanLaporan();
                }
                if (rdUnitKerja.isChecked()) {
                    jasper.setSrc("reports/laporananggaranpendapatanuangkemahasiswaan/LaporanAnggaranPendapatanUangKemahasiswaanByUnitKerja.jasper");
                    List<Map> data = new ArrayList<Map>();
                    Map map = new HashMap();
                    map.put("tahunAwal", tahunAwal);
                    map.put("tahunAKhir", tahunAkhir);
                    jasper.setParameters(map);
                    jasper.setDatasource(ClassUtility.createDatasource(laporanAnggaranPendapatanUangKemahasiswaanDAO.getReport(tahunAwal, tahunAkhir, kdUnit, kdTagih)));
                    tampilkanLaporan();
                }
            }
        }
    }

    public void tampilkanLaporan() {
        panelReport.setVisible(true);
        panelReport.setOpen(true);
        buttonHideExport.setVisible(true);

    }

    public void btnHide() {
        buttonHideExport.setVisible(false);
        panelReport.setVisible(false);
    }
}
